Как известно, пункты меню могут динамически меняться. Классический пример - это список последних файлов. На этом занятии мы с вами и посмотрим, как это можно делать.
Для начала добавим новый пункт для контекстного меню и обработчик для него. После того, как мы сделаем это, нами будет рассмотрено добавление нового пункта меню в обычное меню.
В качестве основы возьмите проект, созданный на прошлом уроке. Добавьте на форму кнопку. В событие Click для добавленной кнопки внесите следующий код:
procedure TForm1.Button1Click(Sender: TObject); //Заводим переменную для нового меню var NewItem: TMenuItem; begin //Создаем пункт меню NewItem:=TMenuItem.Create(self); //Приписываем к пункту меню обработчик NewItem.Action:=Action1; //Задаем заголовок NewItem.Caption:='Пункт 3'; //Добавляем новый пункт меню PopupMenu1.Items.Add(NewItem); end;
Код ясен из комментариев. Осталось добавить только элемент ActionList. Он нужен для строки
... NewItem.Action:=Action1; ...
Добавьте элемент ActionList, добавьте в него действие Action1 (если забыли, то смотрите Урок 14 ).
В обработчик для Action1 добавьте следующий код:
procedure TForm1.Action1Execute(Sender: TObject); begin ShowMessage('Обработчик для меню'); end;
Все, запускайте программу. При нажатии на кнопке в контекстное меню для формулы добавится новый пункт "Пункт 3", при щелчке на котором появится messagebox с соответствующей надписью.
Теперь посмотрим, как добавлять новые пункты меню в главное меню приложения. Здесь возможны два варианта - мы можем добавить его в качестве меню самого верхнего уровня и в качестве нового подменю в уже существующее меню. Рассмотрим сначала первый случай. Возьмите в качестве основы программу, созданную в уроке 16. Добавьте на форму кнопку, а в обработчик щелчка этой кнопки следующий код:
procedure TForm1.Button2Click(Sender: TObject); var NewMainItem: TMenuItem; begin NewMainItem:=TMenuItem.Create(self); NewMainItem.Action:=Action1; NewMainItem.Caption:='Sub menu 2'; //Добавляем меню верхнего уровня MainMenu1.Items.Add(NewMainItem); end;
При запуске программы и нажатии на вторую кнопку у нашей программы появится новое меню верхнего уровня:
Если же нам надо добавить подменю в пункт нашего главного меню, то мы должны написать что-то вроде:
... NewMainItem.Caption:='Sub menu 2'; //Добавлем подменю MainMenu1.Items[0].Add(NewMainItem); ...
Здесь нолик в квадратных скобках показывает номер меню, в который мы добавляем наш новый пункт (нумерация идет с нуля).
Тогда при запуске программы и нажатии на вторую кнопку у меню Menu появится новое подменю:
С этим уроком все!